# coding:utf-8

import logging
from src.config import Config

# 日志打印配置
# logging.basicConfig(level=Config.loggingLevel, format=Config.loggingFormat)
# logging.basicConfig(level=Config.loggingLevel, format=Config.loggingFormat, filename=Config.loggingFilename)

class Log():
    """
    说明：
        通过Log().getLogger 获得定制过的logger
        1. 可通过控制台打印
        2. 也可在log目录中生成log.log日志文件
    """

    # logger = logging.getLogger()

    def __call__(self, *args, **kwargs):
        return self.__setAndReturnLogger()

    def __setAndReturnLogger(self):
        logger = logging.getLogger()
        # 由于重复调用logging.getLogger()会产生多个相同名称的logger(名称为root)，handler数量会一直累加，导致重复记录日志因此这里需要判断处理。
        if not logger.handlers:
            # 设置Handler选择日志输出方式
            fh = logging.FileHandler(filename=(Config.projectDir + r"\log\log.log")) # 文件输出
            ch = logging.StreamHandler()
            # Handler添加输出格式
            format = logging.Formatter(Config.loggingFormat)
            fh.setFormatter(format)
            ch.setFormatter(format)
            # 添加Handler
            logger.addHandler(fh)
            logger.addHandler(ch)
        # 设置日志输出级别
        logger.setLevel(Config.loggingLevel)

        return logger

    @property
    def getLogger(self):
        return self.__setAndReturnLogger()
